#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Project: spd-sxmcc
"""
@author: lyndon
@time Created on 2019/1/3 13:39
@desc  带参数的函数
        不想要修改函数的调用方式，但是还想在原来的函数前后添加功能
      下面的timer就是一个装饰器函数，只是对一个函数有一些装饰作用
"""

import time


# 装饰带参数函数的装饰器
def timer(f):  # 装饰器函数
    def inner(a):
        start = time.time()
        ret = f(a)    # 被装饰的函数
        end = time.time()
        print(end-start)
        return ret
    return inner

# func = timer(func)
# func()

@timer  # 语法糖 @装饰器函数名 相当于写了func = timer(func)
def func(a):
    time.sleep(0.01)
    print('老板好同事好大家好', a)
    return '新年好'

r = func(1)
print(r)


# 原则：开放封闭原则
# 开放：对扩展是开放的
# 封闭：对修改是封闭的
